// #include <stdio.h>
// #include <stdlib.h>
// #include <stdbool.h>
// #include "windows.h"
//
// typedef int DataType;
//
// typedef struct TreeNode {
//     DataType value;
//     struct TreeNode* left;
//     struct TreeNode* right;
// } TreeNode;
//
// // 创建新节点
// TreeNode* CreateNode(DataType value) {
//     TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
//     if (newNode == NULL) exit(0);
//     newNode->value = value;
//     newNode->left = newNode->right = NULL;
//     return newNode;
// }
//
// // 插入节点（二叉搜索树规则）
// TreeNode* InsertNode(TreeNode* root, DataType x) {
//     if (root == NULL) {
//         return CreateNode(x);
//     }
//     if (x < root->value) {
//         root->left = InsertNode(root->left, x);
//     } else {
//         root->right = InsertNode(root->right, x);
//     }
//     return root;
// }
//
// // 释放内存
// void FreeTree(TreeNode* root) {
//     if (root) {
//         FreeTree(root->left);
//         FreeTree(root->right);
//         free(root);
//     }
// }
//
// // 统计双分支节点数量
// int CountDoubleBranchNodes(TreeNode* root) {
//     if(root==NULL) {
//         return 0;
//     }
//     int count=0;
//     //如果当前节点 root 同时具有左子节点 (root->left) 和右子节点 (root->right)，
//     //则说明 root 是一个双分支节点。在这种情况下，计数器 count 增加 1。
//     if(root->left!=NULL&&root->right!=NULL) {
//         count++;
//     }
//     //函数递归地调用自身来统计左子树 (root->left) 和右子树 (root->right) 中的双分支节点数量。
//     //通过 CountDoubleBranchNodes(root->left) 和 CountDoubleBranchNodes(root->right) 来实现，并将结果相加。
//     return count+CountDoubleBranchNodes(root->left)+CountDoubleBranchNodes(root->right);
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     TreeNode* root = NULL;
//     int value[] = {50, 30, 70, 20, 40, 60, 80};
//     int length = sizeof(value) / sizeof(value[0]);
//
//     // 构建二叉搜索树
//     for (int i = 0; i < length; i++) {
//         root = InsertNode(root, value[i]);
//     }
//
//     int result = CountDoubleBranchNodes(root);
//     printf("双分支节点数为: %d\n", result); // 输出应为3
//
//     FreeTree(root);
//     return 0;
// }